import sys

from PySide6 import QtCore
from PySide6.QtGui import QGuiApplication
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton


class main_window(QMainWindow):
    def __init__(self,parent=None):
        super(main_window,self).__init__(parent)
        # 设置主窗体
        self.setWindowTitle("代码创建主窗口测试") # 标题
        self.resize(800,600) # 窗体大小
        self.status = self.statusBar() # 获取主窗口的底部状态栏，并将其赋值给 self.status 这个实例变量.

        # 添加布局管理器
        layout = QVBoxLayout() # 创建一个垂直的布局管理器
        widget = QWidget(self) # 创建一个子控件,基于self(主窗口)
        widget.setLayout(layout) # 将垂直管理器用于这个子控件
        widget.setGeometry(QtCore.QRect(200,160,200,200)) # 设置widget, QRact是矩形对象,前两个参数是x,y坐标, 后两个参数是长宽
        # self.setCentralWidget(widget) # 设置窗体的中心部件,中心部件是这个窗体的主内容区域
        self.widget = widget # 这个和上面那句一样,但是补全的时候补不出来

        #添加关闭主窗口按钮
        self.button1 = QPushButton('关闭窗口')
        self.button1.clicked.connect(self.close)
        layout.addWidget(self.button1)

        #窗口居中按钮
        self.button2 = QPushButton("窗口居中")
        self.button2.clicked.connect(self.center)
        layout.addWidget(self.button2)

        self.button4 = QPushButton("显示状态栏")
        self.button4.clicked.connect(lambda : self.status.showMessage("这里是状态栏,5 秒后消失",5000))
        layout.addWidget(self.button4)

    def center(self):
        # primaryScreen用于获取屏幕对象
        # geometry用于获取屏幕的几何信息,长宽,坐标等
        screen = QGuiApplication.primaryScreen().geometry()
        size = self.size()
        self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)

if __name__ == '__main__':
    # 获取当前应用程序的QApplication实例,没有,所以应该是为空
    app = QApplication.instance()
    if not app:
        # 创建QApp
        app = QApplication(sys.argv)

    # 实例化窗体
    main = main_window()
    main.show()
    sys.exit(app.exec())